# -*-codeing = utf-8 -*-
# @Time: 2025/7/9 9:09
# @Author : 邓佳丽
# @File : 250709.py
# @Software : PyCharm
import os
from idlelib.iomenu import encoding

# IO
# 读：内存从文件里去读，文件的内容进入了内存，入的概念input
# 写:从内存中写到文件，内容从内存出到了文件，出  output、
# 把计算机的内存当做第一人称
#文件操作
# 'r':只读  'w'：只写  'a':追加  'rb'：以二进制的形式进行只读
# 'wb':二进制的只写     'ab'：二进制形式进行追加
# f.seek:对指针的操作

#文件的操作
#复制
# 1.打开要复制的文件
'''with open('love.txt','r',encoding='Utf-8') as f1:
    str=f1.read()
# 2.创建一个新的文件
with open('love.txt','w',encoding='Utf-8')  as f2:
    f2.write(str)
# 3.读出数据，并写入到新文件
f1.close()
f2.close()
# 4.关闭文件
'''

#文件的复制，内存较大的情况
#较大的文件禁止使用read不加参数以及readlines，readline
# with open('love.txt','r',encoding='Utf-8') as f1:
#     with  open('love1.txt','w',encoding='Utf-8')  as f2:
#         while True:
#             str = f1.read(20)
#             if len(str) == 0:
#                 break
#             f2.write(str)
# f1=open('love.txt','r',encoding='Utf-8')
# f2=open('love1.txt','w',encoding='Utf-8')
# with open('love.txt','r',encoding='Utf-8') as f1,open('love1.txt','w',encoding='Utf-8') as f2:
#     pass
# f1.close()
# f2.close()
# f1.readlines() 所有的行以列表的形式返回


# 位：二进制的0和1占一位
# 字节：一个字节占8位，汉字两字节
# 字符：汉字字母符号数字都是一个字符
# with open('love.txt','r',encoding='utf-8') as f:
#     print(f.read(1))
#     f.seek(6)
#     print(f.read(1))

#os
# 工具箱，完成对于系统的一些操作
# os.rename('旧文件','新文件')重命名
# os.remove('') 删除
# os.mkdir('')  创建文件夹
# os.rmdir(' ')删除文件夹
# os.listdir(' ')展示出路径下所有文件
# os.getcwd() 获取当前操作路径

#对某一个路径下的所有文件进行重命名
# import os
# print(os.getcwd())
# #修改默认的操作路径 os.chdir('')
# os.chdir('路径名')
# print(os.getcwd())
# print(os.listdir())
# #遍历所有文件 os.rename（''）
# for file_name in os.listdir():
#     index=file_name.index(']')+1
#     new_file_name='[电影很好看]'+file_name[index:]
#     os.rename(file_name,new_file_name)
# s="  #字符串的index  ".rstrip()
# flag='sss.pydd'.endswith('.py')
# print(flag)

#startswith：文件以什么开头  endswitch:以什么结尾
# import os
# os.chdir('需要找的文件路径')

#迭代器iterator
# 通过iter（可迭代对象）这个函数，得到的对象
# 迭代器可以通过next（it）得到可迭代对象的下一条数据，直到数据迭代不了。

'''L=['张三','李四','王五','赵六']
#返回一个迭代器对象
it=iter(L)
while True:
    try:
        print(next(it))
    except StopIteration:
        break
#之前的写法
for i in L:
    print(i)
'''
# 在进行迭代时候，只能得到下一个元素。迭代器是访问可迭代对象的一种方式。
# 作用：更符合面向对象的思想，可以得到可迭代对象中的下一条记录。
# s={'name':'张三','age':14,'address':'北京'}
# print(s['age'])
# it=iter(s.values())
# while True:
#     try:
#         print(next(it))
#     except StopIteration:
#         break
#
# for i in s:
#     print(s[i])
#
# for i in s.values():
#     print(i)

#生成器generator
# 生产器能动态的提供数据的对象，生产器对象是一个可迭代对象
# 生成器有两种：生成器函数和生成器表达式
# 生产器函数：在函数中有关键字yield，此函数被调用的时候会返回一个生成器
# def myfun():
#     print('正在生成1')
#     yield 1
#     print('正在生成2')
#     yield 2
#     print('结束了')
# gen=myfun()
# it=iter(gen)
# print(next(it))
# print(next(it))


def int_num():
    for i in range(1,101):
        yield i

def ji_num():
    for i in range(1,101,2):
        yield i

# for i in int_num():
#     print(i)
# for i in list(int_num()):
#     print(i)

# gen=int_num()
# it=iter(gen)
# get_gi=ji_num()
# it1=iter(get_gi)
#
# while True:
#     try:
#         print(next(it))
#     except StopIteration:
#         break
# while True:
#     try:
#         print(next(it1))
#     except StopIteration:
#         break

#生成器推导式：
# 语法:(表达式 for in 可迭代对象 [if 真值表达式])
# gen=(x**2 for x in range(1,4))
# print(next(gen))
# print(next(gen))
# print(next(gen))
#生成器在调用一次的时候才生成一次，他一开始只是一个表达式

#迭代工具函数,可以迭代出有个性化要求的数据
# zip(iter,[,iter,iter...])  返回一个zip类型的对象，在py3中这个对象可以转换成列表。
# a=[1,2,3,4]
# b=[5,6,7,8,9,10,11]
# c=[12,13,14,15,16,17,18,19,20]
# zipped1=zip(a)
# zipped2=zip(a,b)
# print(list(zipped2))
# print(list(zip(a,b,c)))

# a=['10086','10000','10010','10011','95588']
# b=['中国移动','中国电信','中国联通','中国铁通']
# zipper=zip(a,b)
# zipper1=zip(a,b)
# for x,y in zipper:
#     print(x,y)
# print(list(zipper))
# print(dict(zipper1))

#enumerate:接受一个可迭代对象
#enumerate(itera[,start]),生成带索引的枚举对象。
# a=['10086','10000','10010','10011','95588']
# b=['中国移动','中国电信','中国联通','中国铁通']
# e1=enumerate(a)
# e2=enumerate(a,100)
# for i in e1:
#     print(i)
# for i in e2:
#     print(i)

#写一个程序可以读取多行的控制台的数据，当用户输入的数据为空时，就输出第一行数据
# L=[]
# while True:
#     a=input("请输入....：")
#     L.append(a)
#     if len(a)==0:
#         break
# for number,text in enumerate(L,1):
#     print('第',number,'行，是：',text)

